package com.hsylient.Proxypattern.dynamicproxy;

import java.lang.reflect.Proxy;

public class WorkerProxy {

    private Object target;

    public WorkerProxy(Object target) {
        this.target = target;
    }

    public Object getProxyInstance() {
        /**
         * 参数一：获取被代理类的类加载器
         * 参数二：被代理类实现的接口
         * 参数三：InvocationHandler事件处理 在执行目标对象的方法的时候，会触发处理器方法
         */
        return Proxy.newProxyInstance(
                target.getClass().getClassLoader(),
                target.getClass().getInterfaces(),
                (proxy, method, args) -> {
                    System.out.println("开始。。。。。");
                    Object resultValue = method.invoke(target, args);
                    System.out.println("结束。。。。。");
                    return resultValue;
                }
        );
    }

}
